#pragma once
#include "DXAMLCommon.h"
#include "IObject.h"

class CHardwareCompositor;

struct ICoreRenderTarget :
	IObject
{
public: 
	virtual XUINT32 GetWidth() = 0;
	virtual XUINT32 GetHeight() = 0;
	virtual XBOOL IsRightAngleRotated() = 0;
	virtual HRESULT Draw(struct ICoreServices * pCore, XBOOL fForceRedraw, struct XRECT_WH * prcDirtyRect) = 0;
	virtual HRESULT Retarget(struct IPALPresentTarget * pIPresentTarget) = 0;
	virtual HRESULT GetPresentTarget(struct IPALPresentTarget * * ppPresentTarget) = 0;
	virtual HRESULT EnsureD2DDeviceAndFactory() = 0;
	virtual void GetD2DFactory(struct IPALAcceleratedGraphicsFactory * * ppD2DFactory) = 0;
	virtual void GetD2DDevice(struct IPALOptimizedGraphicsDevice * * ppD2DDevice) = 0;
	virtual CHardwareCompositor * GetPrimaryCompositor() = 0;
};